const transpileDependencies = ['camelcase', 'signature_pad'];
const path = require('path');

module.exports = {
  publicPath: '',
  // 不需要生产环境的 source map，将其设置为 false 以加速生产环境构建
  productionSourceMap: false,
  devServer: {
    open: true,
    port: '9595',
  },
  transpileDependencies,
  pluginOptions: {
    // 默认dev和prod环境， 可自建环境
    dev: {
      _base: {
        tenantId: '', // 租户id
        baseUrl: 'http://hippiusdevb.hand-china.com:21190/', // 管理平台前端基地址 域名/ip + 端口号 + /
        name: '', // 管理平台账号
        pass: '', // 管理平台密码
        client_id: 'client', // 获取token所需参数
        client_secret: 'secret', // 获取token所需参数
        grant_type: 'password', // 获取token所需参数
        auth_type: 'PLATFORM', // 获取token所需参数
        host: '', // 在线托管 服务器地址
        port: '', // 在线托管 服务器端口号
        username: '', // 在线托管 服务器账号
        password: '', // 在线托管 服务器密码
      }, // 发布所需基础信息 （必需）前四个是离线子应用所需，后四个是在线子应用所需， 只需要两者之一需求可不传另一部分
      'dist-1': {
        type: 'online', // 类型，可传online/offline， 默认offline可不传
        remotePath: '', // zip包上传到服务器具体地址 如'/usr/local/static/12704/online-test'
      }, // 在线发布所需 设置为'dist-1'则表明将/dist/dist-1.zip上传到服务器上去
      dist: {
        menuId: '', // 离线子应用id
      }, // 离线发布所需 设置为dist则基于将/dist/dist.zip去发布版本
    },
    prod: {}, // 可仿照dev设置
  },
  chainWebpack: (config) => {
    const types = ['vue-modules', 'vue', 'normal-modules', 'normal'];
    types.forEach((type) =>
      addStylusModifyVars(config.module.rule('stylus').oneOf(type))
    );

    config.resolve.alias.set(
      'vue$',
      path.resolve(__dirname, 'node_modules/vue/dist/vue.runtime.esm.js')
    );
  },
};

function addStylusModifyVars(rule) {
  rule
    .use('@hips/ui-stylus-loader')
    .loader('@hips/ui-stylus-loader')
    .options({
      modifyVars: {
        vars: {
          // 需要覆盖的变量对象
        },
      },
    })
    .end();
}
